package com.cmc.cloud.cmclink.doc.api.document.req.so;


import com.cmc.cloud.cmclink.doc.api.document.req.AttachmentUpdateReqDto;
import com.cmc.cloud.cmclink.doc.api.document.req.RequirementsUpdateReqDto;
import com.cmc.cloud.cmclink.doc.api.document.req.soamendapplyvo.SoAmendApplyRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.Valid;
import java.util.List;


/**
 * SoCreateAndUpdateReqDto Request VO
 *
 * @author codegen
 */

@Schema(description = "管理后台 - 订舱 UpdateReqonse create VO")
@Data
@Valid
public class SoCreateAndUpdateReqDto {

    @Schema(description = "订舱已确认修改旧订舱ID")
    private Long oldId;

    @Schema(description = "订舱信息")
    @Valid
    private SoUpdateReqDto so;

    @Schema(description = "订舱相关方信息")
    @Valid
    SoScnUpdateReqDto soScn;

    @Schema(description = "订舱航次路径")
    @Valid
    private List<SoVslvoyUpdateReqDto> soVslvoyList;

    @Schema(description = "订舱预配信息")
    @Valid
    private List<SoForecastUpdateReqDto> soForecastList;

    @Schema(description = "订舱货物信息")
    @Valid
    private List<SoCargoUpdateReqDto> soCargoList;

    @Schema(description = "订舱联系人信息")
    @Valid
    private List<SoContactUpdateReqDto> soContactList;

    @Schema(description = "订舱附件")
    @Valid
    private List<AttachmentUpdateReqDto> attachmentList;

    @Schema(description = "订舱附加要求")
    @Valid
    private List<RequirementsUpdateReqDto> requirementsList;

    @Schema(description = "审批通过后修改申请理由")
    private String applyReason;

    @Schema(description = "保存或提交，默认提交true")
    private Boolean commitOrSave;

    @Schema(description = "特种货类型(AK,ODO,FLEXI,DG)")
    private String applyType;

    @Schema(description = "特种货主信息")
    private SpecialCargoApplyBaseApiVO spcApplyInfo;

    @Schema(description = "特种货航线信息")
    private List<SpecialCargoVoyageBaseApiVO> spcVoyageInfo;

    @Schema(description = "OOG特种货创建或更新ReqVO")
    private List<CntrAndOogBaseVO> oogCreateReqVO;

    @Schema(description = "ODO特种货创建或更新ReqVO")
    private List<CntrAndOdoBaseVO> odoCreateReqVO;

    @Schema(description = "FLEXI特种货创建或更新ReqVO")
    private List<CntrAndFlexiBaseVO> flexiCreateReqVO;

    @Schema(description = "DG特种货创建或更新ReqVO")
    private CntrAndDgBaseVO dgCreateReqVO;

    @Schema(description = "特种货附件")
    private List<AttachmentUpdateReqDto> spcAttachmentList;

    @Schema(description = "SO订舱修正数据(最新)")
    private SoAmendApplyRespVO soAmendApplyRespVO;
}
